static int io_mem_nb = 1;
/* log support */
-char *logfilename = "/tmp/qemu.log";
FILE *logfile;
int loglevel;
void cpu_set_log(int log_flags)
{
loglevel = log_flags;
- if (!logfile) {
- logfile = fopen(logfilename, "w");
- if (!logfile) {
- perror(logfilename);
- _exit(1);
- }
-#if !defined(CONFIG_SOFTMMU)
- /* must avoid mmap() usage of glibc by setting a buffer "by hand" */
- {
- static uint8_t logfile_buf[4096];
- setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf));
- }
-#else
- setvbuf(logfile, NULL, _IOLBF, 0);
-#endif
- stdout = logfile;
- stderr = logfile;
- }
+ if (!logfile)
+ logfile = stderr;
}
void cpu_set_log_filename(const char *filename)
{
- logfilename = strdup(filename);
+ logfile = fopen(filename, "w");
+ if (!logfile) {
+ perror(filename);
+ _exit(1);
+ }
+#if !defined(CONFIG_SOFTMMU)
+ /* must avoid mmap() usage of glibc by setting a buffer "by hand" */
+ {
+ static uint8_t logfile_buf[4096];
+ setvbuf(logfile, logfile_buf, _IOLBF, sizeof(logfile_buf));
+ }
+#else
+ setvbuf(logfile, NULL, _IOLBF, 0);
+#endif
+ stdout = logfile;
+ stderr = logfile;
}
/* mask must never be zero, except for A20 change call */
nb_nics = 0;
/* default mac address of the first network interface */
- /* init debug */
- sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm.%ld.log", (long)getpid());
- cpu_set_log_filename(qemu_dm_logfilename);
+ /* Init logs to stderr to start with */
cpu_set_log(0);
optind = 1;
semihosting_enabled = 1;
break;
case QEMU_OPTION_domainname:
- strncat(domain_name, optarg, sizeof(domain_name) - 20);
+ strncpy(domain_name, optarg, sizeof(domain_name) - 1);
break;
case QEMU_OPTION_d:
domid = atoi(optarg);
}
}
+ /* Now send logs to our named config */
+ sprintf(qemu_dm_logfilename, "/var/log/xen/qemu-dm-%s.log", domain_name);
+ cpu_set_log_filename(qemu_dm_logfilename);
+
#ifndef _WIN32
if (daemonize && !nographic && vnc_display == NULL && vncunused == 0) {
fprintf(stderr, "Can only daemonize if using -nographic or -vnc\n");